//#include <stdio.h>
//
//int cmp(const void* e1, const void*e2)
//{
//    return (*(int*)e1-*(int*)e2);
//}
//
//int cmpDouble(const void* e1, const void* e2)
//{
//    if (*(double*)e1-*(double*)e2)
//    {
//        if (*(double*)e1-*(double*)e2>0) return 1;
//        else return -1;
//    }
//    return 0;
//}
//
//void Swap(char* buf1, char* buf2, int width)
//{
//    int i=0;
//    for (i=0; i<width; i++)
//    {
//        char tmp=*buf1;
//        *buf1=*buf2;
//        *buf2=tmp;
//        buf1++; buf2++;
//    }
//}
//
//void bubble_sort_3(void* arr, int sz, int width, int(*cmp)(const void* e1, const void* e2))
//{
//    int i=0;
//    //The number of loop iterations.
//    for (i=0; i<sz-1; i++)
//    {
//        int flag=1, j=0;
//        for (j=0; j<sz-1-i; j++)
//            if (cmp((char*)arr+j*width, (char*)arr+(j+1)*width)>0)
//            {
//                Swap((char*)arr+j*width, (char*)arr+(j+1)*width, width);
//                flag=0;
//            }
//        if (flag) break;
//    }
//}
//
//int main()
//{
//    double arr[10]={0};
//    int sz=sizeof(arr)/sizeof(arr[0]);
//    int i=0;
//    printf("Please input %d elements:>", sz);
//    for (i=0; i<sz; i++)
//        scanf("%lf", &arr[i]);
//    bubble_sort_3(arr, sz, sizeof(arr[0]), &cmpDouble);
//    printf("The result is:\n");
//    for (i=0; i<sz; i++)
//        printf("%.2lf ", arr[i]);
//    return 0;
//}
